package org.wj.problem;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
 * LeetCode第一题：两数之和。
 * 题目描述：
 * 给定一个整数数组 nums 和一个目标值 target，请你在该数组中找出和为目标值的那两个整数，并返回他们的数组下标。
 */
public class SumOfTwoNumbers {

	public static void main(String[] args) {

	}

	public static int[] sumOftwoNumbers(int[] nums, int target) throws Exception {
		Map<Integer, Integer> indexNum = new HashMap<>();
		for (int i = 0; i < nums.length; i++) {
			indexNum.put(nums[i], i);
		}
		int[] result = new int[2];
		for (Map.Entry<Integer, Integer> entry : indexNum.entrySet()) {
			int i = target - entry.getKey();
			if (indexNum.containsKey(i)) {
				result[0] = indexNum.get(i);
				result[1] = entry.getValue();
				if (result[0] != result[1]) {
					return result;
				}
				for (int j = 0; j < nums.length; j++) {
					if (nums[j] == i) {
						result[0] = j;
						return result;
					}
				}
			}
		}
		return result;
	}

}
